Secure multi-party computation enables parties to compute a function over their joint, respective inputs, which are provided as private inputs. That is, a party's input is confidential to the other parties. No party can infer anything about another party's input except what can be inferred from one's own input and/or output.
Secure computation has many applications and has been successfully deployed in commercial and industrial settings. Secure computations, however, notoriously suffer from poor performance as compared to non-secure computations. In an effort to address such deficiencies, manual optimization in the form of manual optimized protocols, has been proffered as a solution. Manual optimization, however, has limitations (e.g., difficult to scale). In view of this, compilers and programming environments that intend to remedy these problems have been developed. Nevertheless, such solutions can still suffer from worse performance than manual optimized protocols.